<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // function longfei() {
        //     const p = new Promise(function(resolve,reject){
        //         const time = Math.random() * 3000 + 2000;
        //         setTimeout(()=>{
        //             if(time<3500){
        //                 resolve({code:1,message:'成功了'})
        //             }
        //             else{
        //                 reject({code:0,message:'失败了'})
        //             }
        //         },time)
        //     })

        //         return p;
        //     }


        // promise对象.then()  成功
        // promise对象.catch() 失败
        // promise对象.finally() 完成


        // longfei()
        // .then(res=>console.log(res))
        // .catch(err=>console.log(err))
        // .finally(function(){
        //     console.log('全部结束了');
        // })



        // 其它方法 

        //1.all 
        // Promise.all([promise1,promise2,...])
        // 可以同时触发多个promise行为  
        // 所有的promise行为 都成功 all 才成功
        // 只要有一个promise失败  all 失败

        //2.race 
        // Promise.race([promise1,promise2,...])
        // 按照速度算  第一个结束  就结束


        //3.allSettled (es2020)
        // Promise.allSettled([promise1,promise2,...])
        // 不管多个成功还是失败 都会触发 
        // 所有的promise行为 都成功 all 才成功
        // 会在结果中以数组形式返回多个promise的状态 

        //4.resolve 
        // 强行返回成功状态的promise对象
        //5.reject
        // 强行返回失败状态的promise对象


        function longfei() {
            const p = new Promise(function (resolve, reject) {
                const time = Math.random() * 3000 + 2000;
                setTimeout(() => {
                    if (time < 3500) {
                        resolve({ code: 1, message: '成功了' })
                    }
                    else {
                        reject({ code: 0, message: '失败了' })
                    }
                }, time)
            })

            return p;
        }


        // all

        // Promise.all([longfei(),longfei(),longfei(),longfei()])
        // .then(res=>console.log(res))
        // .catch(err=>console.log(err))

        // 如果全部成功  返回成功的状态 
        // 只要有一个失败  返回失败的状态
        // Promise.race([longfei(),longfei(),longfei(),longfei()])
        // .then(res=>console.log(res))
        // .catch(err=>console.log(err))
        // // 哪个promise对象快 返回这个promise对象的状态  
        // // 如果 第一个快  返回第一个promise的状态


        // Promise.allSettled([longfei(),longfei(),longfei(),longfei()])
        // .then(res=>console.log(res))
        // .catch(err=>console.log(err))

        // 返回一个数组  每个promise对象的状态 

        // Promise.resolve('我成功了把我返回').then(res=>console.log(res));
        Promise.reject('我失败了把我返回').catch(res=>console.log(res));

        
    </script>
</body>

</html>